import { Request, Response } from 'express';
import { NginxUtil } from '../utils/nginx.util';
import fs from 'fs';

export const sslController = {
  // 获取所有证书
  async getCertificates(req: Request, res: Response) {
    try {
      const certificates = await NginxUtil.getSSLCertificates();
      res.json(certificates);
    } catch (error) {
      console.error('获取证书列表失败:', error);
      res.status(500).json({ message: '获取证书列表失败' });
    }
  },

  // 下载证书
  async downloadCertificate(req: Request, res: Response) {
    try {
      const { domain } = req.params;
      const { filePath, cleanup } = await NginxUtil.downloadCertificate(domain);

      res.download(filePath, `${domain}_cert.zip`, (err) => {
        // 下载完成后清理临时文件
        cleanup();
        if (err) {
          console.error('下载证书文件失败:', err);
        }
      });
    } catch (error) {
      console.error('下载证书失败:', error);
      res.status(500).json({ message: '下载证书失败' });
    }
  },

  // 测试配置
  async testConfig(req: Request, res: Response) {
    try {
      await NginxUtil.testConfig();
      res.json({ message: '配置测试通过' });
    } catch (error) {
      res.status(400).json({ message: (error as Error).message });
    }
  },

  // 重新加载配置
  async reloadConfig(req: Request, res: Response) {
    try {
      await NginxUtil.reloadConfig();
      res.json({ message: '配置重新加载成功' });
    } catch (error) {
      res.status(500).json({ message: (error as Error).message });
    }
  }
}; 